package poo.contatori;

public class ContatoreModulare extends Contatore {

	protected int modulo;

	public ContatoreModulare() {
		modulo = 10;
	}

	public ContatoreModulare(int modulo, int val){//cos normale
		super(val);
		if(val<0 || modulo<1 || val>modulo) throw new IllegalArgumentException();
		this.modulo=modulo;
	}
	public ContatoreModulare(ContatoreModulare cm){//cos di copia
		super(cm.valore);
		this.modulo=modulo;
	}
	public int getModulo(){
		return modulo;
	}
	public void incrementa(){
		valore=(valore+1)%modulo;
	}
	public void decrementa(){
		valore=(valore-1+modulo)%modulo;
	}
	public String toString(){
		return super.toString()+" modulo: "+modulo;
	}
	public boolean equals(Object o){
		if(!(o instanceof ContatoreModulare)) return false;
		if(o==this) return true;
		ContatoreModulare c = (ContatoreModulare)o;
		return c.getValore()==valore && c.getModulo()==modulo;
	}//equals

	public static void main(String[] args) {
		
		Contatore c = new Contatore();
		System.out.println(c);
		Contatore c1 = new Contatore(5);
		System.out.println(c1);
		c.incrementa();
		System.out.println(c);
		c1.decrementa();
		System.out.println(c1);
		ContatoreModulare cm = new ContatoreModulare(10,9);
		System.out.println(cm);
		cm.incrementa();
		System.out.println(cm);

	}

}
